--- id: TASK-013 title: Live ticker panel in detail view status: "\U0001F3C1 Done" assignee: - '@humdrum-tiv' created_date: '2026-06-16 23:50' updated_date: '2026-06-18 01:17' labels: - feature dependencies: [] priority: high ordinal: 13000 --- ## Description While viewing a live game, show a Golazo-style strip of selectable game boxes at the top (above the watched game's score box): other live games (same league first, then other leagues) plus today's finals. User can tab/arrow between boxes and press enter to switch the detail view to that game. Data comes from already-polled a.games — no new fetch loop. ## Acceptance Criteria - [x] #1 Detail view renders a ticker strip of compact game boxes above the watched game's score box - [x] #2 Ticker shows live games (same league first, then others) then today's finals, excluding the watched game - [x] #3 tab/right and shift+tab/left move ticker selection; enter switches the detail view to the selected game - [x] #4 Up/Down still scroll the detail body; selected ticker box is visually highlighted - [x] #5 Strip windows horizontally to keep selection on screen with off-screen affordances; hidden when no other games ## Implementation Notes Added internal/ui/ticker.go (tickerGames ordering, tickerStrip horizontal windowing, tickerCell mini-box). Wired into detail.go via detailBoxBlock (stacks ticker over score box; shared by detailView + detailScrollMax so body height stays correct). Nav in update.go: NextLg/PrevLg move tickerCursor, Enter routes through shared openDetail to switch games. Added App.tickerCursor. Tests in ticker_test.go cover ordering/exclusion, window clamping, and a render smoke test. ## Final Summary Adds a Golazo-style live ticker to the detail view: a strip of selectable game boxes above the watched game's score box showing other live games (same league first, then others) then today's finals, sourced from already-polled a.games (no new fetch). tab/→ and ⇧tab/← move the selection, enter switches the detail view to that game; ↑/↓ still scroll the body. Strip windows horizontally with ‹ › off-screen affordances and hides when nothing else is on. New ticker.go + App.tickerCursor + shared openDetail helper; detailScrollMax/detailBodyAvail account for the strip's height. Tests + go vet/build pass.